Reflex可以使用css的功能設計定樣式。
為了與python的標準保持一致,可以使用snake_case(蛇形命名法)。
先寫一個範例。
class SytleState(rx.State):
pass
def index():
return rx.center(
rx.heading(
'早安啊'
)
)
接下來更改app的地方
# def index():
# ...
style = {
'font_family': 'Comic Sans MS',
'font_size': '16px'
}
app = rx.App(style = style)
# ...
這是global寫法,使用字典的形式把基本樣式套用到所有的元件內,這樣的好處是不用對每個元件進行設定。
def index():
return rx.center(
rx.heading(
'早安啊'
),
rx.text(
'我是文字'
)
)
style = {
rx.Heading: {
'font_weight': '500'
},
rx.Text: {
'color': 'green.500'
}
}
結果圖如下
在這個寫法裡一樣可以寫出相同的結果,不過不同的是指定。
我們保留上面的style
,更改一下內容。
def index():
return rx.center(
rx.heading(
'早安啊'
),
rx.text(
'我是文字',
# 透明度
background_image = 'linear-gradient(135deg, orange 60%, cyan)',
background_clip = 'text',
font_weight = "bold",
font_size = "2em",
)
)
sytel = {
# ...
}
# ...
這時候會發現上面的heading
會照著style的樣式進行處理,而底下的text
則是依照底下寫的style來制定文字樣式。
子元件會覆蓋掉底下的style(global)。
如下圖。
reflex也支援 Tailwind CSS,不過要啟用它之前,要先更改一下rxcongig.py
的參數
import reflex as rx
class MyreflexappConfig(rx.Config):
pass
config = MyreflexappConfig(
app_name="my_reflex_app",
env = rx.Env.DEV,
tailwind = {}
)
一樣支援tailwind配置選項,插件和預設自動包含在require()
內部。
config = MyreflexappConfig(
app_name="my_reflex_app",
env = rx.Env.DEV,
tailwind = {
"theme": {
"extend": {},
},
"plugins": ["@tailwindcss/typography"],
},
)
可以使用
config = rx.Config(app_name = "app", tailwind = None)
支援所有 Chakra UI 的偽樣式,
def index():
return rx.center(
rx.box(
rx.text(
"Hover Me",
_hover = {
"color": "green"
}
),
)
)
滑鼠滑過去就會顯示綠色。
一個style可以共用,比如:
style = {
'font_family': 'Comic Sans MS',
'font_size': '16px',
'color': 'green.500'
}
class SytleState(rx.State):
pass
def index():
return rx.center(
rx.text('1', style = style),
rx.text('500', style = style)
)
這邊一樣依照style的方式去帶入text裡面轉換。
也可以使用多個字典組合起來...那就先拆分吧。
style = {
'font_family': 'Comic Sans MS',
'font_size': '16px',
}
style1 = {
'color': 'green.500'
}
# class
# ...
def index():
return rx.center(
rx.text('1', style = style),
rx.text('500', style = [style, style1])
)
可以依照結果知道第二個text才會變色,再來要注意第二點,後面定義的樣式會覆蓋掉前面設定的樣式。
我這邊tailwind css 不知道為甚麼不能用,我就先拿官網的範例上來貼了,我找人問問看,如果我這邊有結果就再補上來...
找到問題了,這是reflex的bug,tailwind css 在0.2.8版本之後可用,如果你的reflex 是在0.2.8版本之前的,請使用
poetry remove reflex
接著
poetry add reflex
最後初始化一次
reflex init
運行
reflex run --loglevel debug
就可以看見上面的範例圖囉。